"""
Filesystem 模块 - 配置模型

此模块定义了文件系统模块所需的所有配置项。
"""
from pydantic import BaseModel, Field


class S3StorageConfig(BaseModel):
    """
    S3 或兼容 S3 协议的云存储配置。
    """
    access_key: str | None = Field(None, description="Access Key ID")
    secret_key: str | None = Field(None, description="Secret Access Key")
    session_token: str | None = Field(None, description="Session Token (可选)")
    endpoint_url: str | None = Field(None, description="存储端点 URL (例如阿里云 OSS 的 endpoint)")
    region_name: str | None = Field(None, description="区域名称 (例如 'us-east-1')")
    default_bucket: str | None = Field(None, description="默认使用的存储桶名称")


class FileSystemSettings(BaseModel):
    """
    文件系统模块的完整配置。
    """
    # 是否启用文件系统服务
    enabled: bool = Field(False, description="是否启用文件系统服务")
    # 文件系统提供者，例如 'local', 's3'
    provider: str = Field("local", description="文件系统提供者 ('local' 或 's3')")
    # 本地文件系统提供者的根存储路径
    local_root_path: str = Field("./storage", description="本地存储的根目录")
    # S3 提供者的配置
    s3: S3StorageConfig = Field(default_factory=S3StorageConfig, description="S3 存储配置") 